Suchfunktion

Ein Tabellenpflegedialog besitzt leider zwei elementare Funktionen nicht: Sortieren und Suchen. Wie eine Suchfunktion eingebaut werden kann, zeige  ich dir in diesem Beitrag!

Um die Suchfunktion einzubauen, muss das generierte Pflegedynpro angepasst werden. Die Änderung ist also weg, sobald der Pflegedialog neu generiert wird!!

Vorbereitung

Zuerst muss ein Druckknopf zum Suchen eingebaut werden. Dies kann zum Einen über den Zeitpunkt “ST – Name des Trägerprogramms für das GUI-Menü” erreicht werden. Die einfachere Möglichkeit ist jedoch, einfach einen Druckknopf mit dem Fernglas auf das Dynpro zu bauen. Weisen Sie den Funktionscode “ZZFIND” zu.

Dann muss in der Ablauflogik ein neues Modul angelegt werden:

      MODULE liste_update_liste.
    ENDCHAIN.
  ENDLOOP.
  MODULE zz_usercommand.
  MODULE liste_after_loop.

Wichtig ist, dass das Modul vor dem Modul LISTE_AFTER_LOOP steht!

Ein Doppelklick auf zz_usercommand legt dieses an. Hier solltest du einen Unterroutinenaufruf gleichen Namens machen:

PERFORM zz_usercommand.

Nachdem du dies Routine angelegt hast, füge den folgenden Code ein:

FORM zz_usercommand .

  DATA lv_searchtext TYPE text30.
  DATA lv_action     TYPE c.
  DATA ls_myview     LIKE zmyview_extract.

  CASE sy-ucomm.
    WHEN 'ZZFIND'.
*** Ask for search string
      CALL FUNCTION 'POPUP_TO_SEARCH_VALUE'
        EXPORTING
          textline1   = 'Suchtext'
          titel       = 'Einträge suchen'
          valuelength = 30
        IMPORTING
          action      = lv_action
          value       = lv_searchtext
        EXCEPTIONS
          OTHERS      = 2.
      IF lv_action = 'J'.
*** search...
        CLEAR mark_extract.
*** each line
        LOOP AT total INTO ls_myview.
          IF ls_org CS lv_searchtext.
*** and mark if found
            ls_myview-mark = 'M'.
            ADD 1 TO mark_extract.
          ELSE.
            ls_myview-mark = space.
          ENDIF.
          MODIFY total FROM ls_myview.
        ENDLOOP.
*** Display all marked entries
        function = 'ALMK'.
      ENDIF.
  ENDCASE.

ENDFORM.                    " zz_usercommand

Ersetze “MYVIEW” durch den Namen deines Views oder Tabelle.

Ergebnis

Du hast nun einen Druckknopf zum Suchen auf Ihrem Pflegedynpro. Nach Drücken erscheint ein Popup, das nach einem Suchstring fragt.

Alle gefundenen Einträge werden angezeigt.

Enno Wulff